量化交易30天
本系列文章是紀錄一位量化交易新手的學習過程,除了基礎的Python語法不說明,其他金融相關的東西都會一步步地說明,希望讓更多想學習量化交易但是沒有學過相關金融知識的朋友們,透過這系列的文章,能夠對量化交易略知一二,也歡迎量化交易的高手們多多交流。
由於在交易的過程中,有些策略會是去檢測損益情況,例如:價位有達到停損或停利點的時候就賣出,那這樣的情況往往是要不斷地去檢視損益的部份,所以這篇就要來學習一下怎麼用shioaji查詢帳戶狀況啦,這邊。(一樣要記得要先用api登入跟載入憑證喔,可以先看Day16)
In
api.list_positions(api.stock_account)
Out
Position(code='6142', direction=<Action.Buy: 'Buy'>, quantity=13, price=8.04, pnl=1534.0, yd_quantity=29)
說明一下attributes:
code (str): contract id. 股票代號
direction (Action): action.{Buy, Sell} 持倉方向
quantity (int): quantity. 庫存量
price (float): the average price. 均價
pnl (float): unrealized profit. 未實現損益
yd_quantity (int): yesterday 昨日庫存
In
import pandas as pd
pl = api.list_profit_loss(api.stock_account,'2020-05-05','2020-09-30')
df = pd.DataFrame(pl)
df
Out
說明一下attributes:
id (int): use to find detail 用來看詳細損益用的識別碼
code (str): contract id. 標的代號,股票商品的話就是股票代號啦
quantity (int): quantity. 交易數量
price (float): price. 交易價格
pnl (float): profit and loss. 盈虧
pr_ratio (float): profit rate. 獲利率
用上面那個id就可以來查損益的詳細資料囉,可以看到上面第一筆資料的交易量是5張,實際看下面detail時候,其實是當初分兩筆買進的股票。
In
# 後面那個2就是使用上面Profit Loss的id
detail = api.list_profit_loss_detail(api.stock_account, detail_id = 0)
df = pd.DataFrame(detail)
df
Out
一樣來看一下attributes吧:
code (str): contract id. 標的代號
quantity (int): quantity. 交易數量
price (float): price. 交易價格
cost (int): cost of price. 成本
fee (int): fee. 手續費
shortselling_fee (int): fee of short selling.
currency (str): {NTD, USD, HKD, EUR, CAD, BAS}
顯示最近3天的交割金額,t代表今天,t+1代表明天,t+2代表後天。
In
settlement = api.list_settlements(api.stock_account)
df = pd.DataFrame(settlement)
df
Output
In
acc_balance = api.account_balance()
df = pd.DataFrame(acc_balance)
df
Output
本篇總結
這篇大概就總結一下shioaji查帳戶的功能,其實算是蠻完整的。
P.S.
如果大家對於量化交易有興趣的話,我自己有上過以下這門課,課程內容從串接股市資料API、儲存至資料庫、將自己的策略轉化成程式碼、自動下單,並且可以把整個流程自動化,每天早上執行一次,一整天就不用看盤了,覺得是蠻實戰的,可以參考看看。
筆者 Sean
奈米戶投資人 / Python愛用者
喜歡用Python玩轉金融數據,從個股基本面、技術面、籌碼面相關資料,一直到總體經濟數據,都是平常接觸到的素材;對於投資,除了研究歷史數據,也喜歡瞭解市場上大家在玩些什麼。